Large-scale shared memory multi-processor computer systems typically have a large number of processing nodes (e.g., with one or more microprocessors and local memory) that cooperate to perform a common task. For example, selected nodes on a multi-processor computer system may cooperate to multiply a complex matrix. To do this in a rapid and efficient manner, such computer systems typically divide the task into discrete parts that each are executed by one or more of the nodes.
When dividing a task, the nodes often share data. To that end, the microprocessors within the nodes each may access the memory of many of the other nodes. Those other microprocessors could be in the same node, or in different nodes. For example, a microprocessor may retrieve data from the memory of another node (the “home node”). Accordingly, rather than retrieving the data from the home node each time it is needed, the requesting microprocessor, as well as other microprocessors, may access their locally held copies (cached copies) to execute their local functions.
Problems arise, however, when the data that was retrieved and held by some other microprocessor changes, and such other microprocessor has not been notified of that change. When that happens, the locally held data may no longer be accurate, potentially corrupting operations that rely upon the retrieved data.
To mitigate these problems, computer systems that share data in this manner typically execute cache coherency protocols to ensure that locally held copy of the data is consistent with the data at the home node. Implementing cache coherency protocols on computer systems having many nodes, however, often requires a great deal of storage; specifically, among other things, each node may have a directory identifying any nodes having a copy of its data. The storage required by the directories undesirably can be greater than the storage required for storing the shared data. To minimize this high storage requirements, some systems undesirably limit the amount of sharing between microprocessors.